<?php
class LoteDAO extends GenericDAO  {

	function __construct() {
		$this->tabela["alteracao"] = array(	"id" 	=> 218,
											"nome" 	=> strtolower(substr(get_class(), 0, -3)));
	
		$this->tabela["consulta"]  = array(	"id" 	=> 226,
											"nome" 	=> "vw_" . strtolower(substr(get_class(), 0, -3)));

		$this->tabela["relatorio"]  = array("id" 	=> 226,
											"nome" 	=> "vw_" . strtolower(substr(get_class(), 0, -3)));
	}
	
	public function consultarPK($valor) {
	    $sql = "where id = :id";
	    $params['id'] = $valor;
	    return $this->consultar($sql, $params);
	}
	
	public function consultarCodigo($valor) {
		$sql = "where codigo = :codigo";
		$params['codigo'] = $valor;
		return $this->consultar($sql, $params);
	}

	public function inserir($registro, $finalizarTransacao = true) {
		$res = null;
		$mapaDAO = new MapaDAO();
		
		if ($this->inserirRegistro($registro, false)) {
			$res = $registro;
			$res['id'] = $this->ultimoId();
			
			$mapa = $mapaDAO->consultarQuadra($res['quadra']);
			if (!isset($mapa[0])) {
				$mapa['quadra'] 	= $res['quadra'];
				$mapa['lotes']		= 1;
				$mapa['construidos']= ($res['construido'] == 'S') ? 1 : 0;
				$mapa['vendidos']	= 0;
				$mapa['ocupados']	= 0;
				$mapa['avenda']		= ($res['construido'] == 'S') ? 1 : 0;
				$mapaDAO->inserir($mapa, $finalizarTransacao);
			} else {
				$mapaalt['id'] 			= $mapa[0]['id'];
				$mapaalt['lotes'] 		= $mapa[0]['lotes'] + 1;
				$mapaalt['construidos']	= ($res['construido'] == 'S') ? $mapa[0]['construidos'] + 1 : $mapa[0]['construidos'];
				$mapaalt['avenda']		= ($res['construido'] == 'S') ? $mapa[0]['avenda'] + 1 : $mapa[0]['avenda'];
				$mapaDAO->alterar($mapaalt, $finalizarTransacao);
			}
		}
		return $res;
	}
	
	public function excluir($id, $finalizarTransacao = true) {
		$pk['id'] = $id;
		return $this->excluirRegistro($pk, $finalizarTransacao);	
	}
	
	public function alterar($registro, $finalizarTransacao = true) {
		$pk['id'] 		= $registro['id'];
		unset($registro['id']);
		return $this->alterarRegistro($registro, $pk, $finalizarTransacao);
	}
	
	public function consultarRelatorio($tipo, $sq_codigo, $q_codigo) {
		switch ($tipo) {
			case "q":
				$where = "where sq_codigo like :sq_codigo and q_codigo like :q_codigo";
				$params['sq_codigo'] = "$sq_codigo%";
				$params['q_codigo'] = "$q_codigo%";
				break;
			default:
				$where = "";
				$params= array();
		}
		return $this->extrairRelatorio($where, $params);
	}
}
?>